{if @!$onlyOne}
<div id="postsContainer">

{once}
<script>{literal}
var posts = {
	form: null,
	tpl: "<p style='border-bottom: 2px dotted rgb(238, 240, 240); padding: 5px 0pt 10px;'>{deleted}</p>",
	item: '{/literal}{$item}{literal}',
	show: function( id )
	{
		posts.cleanup( );
		
		var _ta = new Element( 'textarea', {
			'id': 'postsMessage',
			'class': 'postsArea',
			'styles': { 'width': '70%', 'height': '80px' },
			'events': { 'keypress': function(e){ if(!e.control||e.key!='enter') return; if(!$('postsSend')) return; $('postsSend').fireEvent('click'); } }
			} );
		posts.form = new Element('div',{ 'id': 'postsForm' })
			.adopt( _ta )
			.adopt( new Element( 'br' ) )
//			.appendText( '[' )
			.adopt( new Element( 'a', {
				'id': 'postsSend', 'class': 'jsbutton',
				'events': { 'click': function(){ posts.add( $('postsMessage').get('value'), (this.getParent('table').id).replace(/[^0-9]/g,'') ); } },
				'text': 'написать'
			} ) )
			.appendText( ' ' )
			.adopt( new Element( 'a', {
				'id': 'postsCancel', 'class': 'jsbutton warning',
				'events': { 'click': function(){ posts.cleanup( ); } },
				'text': 'отменить'
			} ) )
//			.appendText( ']' )
			;
		
		if( id != null )
		{
			var comment = $$('table#comment'+id+' tbody')[0];
			comment.adopt(
				new Element( 'tr', { 'id': 'postsFormRow' } )
				.adopt( new Element( 'td', { 'id': 'fuck', 'colspan': 2 } )
				.adopt( posts.form ) ) );
		}
		else
		{
			var table = $$('#postsContainer>table')[0].getFirst();
			table.adopt(
				new Element( 'tr', { 'id': 'postsFormRow' } )
				.adopt( new Element( 'td', { 'id': 'fuck' } )
				.adopt( posts.form ) ) );
				}

		( new Element( 'div', { 'id': 'postsSending', 'class': 'ajaxloading', 'styles': { 'width': _ta.getWidth(), 'height': _ta.getHeight(), 'display': 'none' } } ) )
			.inject( posts.form, 'top' );
		
		$('postsMessage').focus( );
		
		return false;
	},
	hide: function( )
	{
		if( form == null ) return false;
		posts.cleanup( );
	},
	add: function( message, post_id )
	{
		var t = function(responseJSON, responseText) {
				if( !responseJSON.result || responseJSON.result.error ) return null;
				if( !responseJSON.result.row ) { posts.cleanup(); alert('at first sign in, please.'); };
				
				var x = new Element( 'table' );
				x.innerHTML = responseJSON.result.row;
				x = x.getFirst().getFirst();
				
				var q=$('postsFormRow').getParents('tr td table')[0];
				if( q.getParents('#postsContainer').length == 0 )
					x.inject( $('postsLastRow'),'before');
				else
					x.inject( q,'after');
				
				var q=$('postsBlank');
				if( q ) q.dispose();
				posts.cleanup();
			};
		$('postsMessage').setStyle('color','#999');
		$('postsSending').setStyle('display','');
		(new Request.JSON({
			'url': '/ajax/posts/add/'+posts.item+'/',
			'onSuccess': t
		})).post({'item': posts.item, 'message': message, 'post': post_id});
	},
	del: function( post_id )
	{
		var t = function(responseJSON, responseText){
				if( responseJSON.result && responseJSON.result.error ) return null;
				if( !responseJSON.result || !responseJSON.result.post ) return null;
				$('comment'+responseJSON.result.post).getParent().innerHTML = posts.tpl.substitute({'deleted':_qdeletes[Math.floor(Math.random()*_qdeletes.length)]});
			};
		(new Request.JSON({
			'url': '/ajax/posts/delete/'+posts.item+'/',
			'onSuccess': t
		})).post({'post': post_id});
	},
	cleanup: function( )
	{
		var z=$('postsFormRow');
		if( !z ) return;
		z.dispose();
		z.destroy();
	}
}
{/literal}
{* deleting strings calculating *}
{assign var=_qdeletes value='|'|explode:"Некто пишет, а некто - удаляет.|Комментарий удален... Судьба.|Кто-то написал плохую запись и решил удалить её.|Нет! Все-таки этот комментарий пришлось удалить...|И зачем человек старался? Все равно никто не прочтет удаленный комментарий.|Комментарий удален. Всего лишь.|Негоже, человече, плохо комментировать.|Этот комментарий очень не хотел удаляться. Но мы ему помогли."}
{assign var=_qdeletel value=$_qdeletes|@count}
{assign var=_q value=_qdeletes|@shuffle}
window._qdeletes = [{foreach from=$_qdeletes item=_q name=deletes}"{$_q}"{if !$smarty.foreach.deletes.last},{/if}{/foreach}];
</script>
{/once}

<table width="100%">
<tbody>
{/if}

{assign var=postsExists value=0}
{foreach from=$posts item=post}
{assign var=_level value=$post.fullpath|@substr_count:'.'}
{get model="users" assign=_user id=$post.user_id}
<tr><td style="padding-left:{$_level*16}px;">
{if $post.state=='deleted'}
{if $post.childs}
<p style="border-bottom: 2px dotted rgb(238, 240, 240); padding: 5px 0pt 10px;">
{assign var=_qi value=$post.id%$_qdeletel}{$_qdeletes[$_qi]}
</p>
{/if}
{else}{if $post.state=='frozen'}
{else}
{assign var=postsExists value=1}

<table id="comment{$post.id}" class="comment"><tr>
<td class="avatar" rowspan="3">
{capture assign=avatarSize}{if 3>$_level}64{else}32{/if}{/capture}
<img class="avatar size{$avatarSize}" src="{render t='config://web/avatar' user=$_user.id size=$avatarSize assign=src}{$src|file:"/img/empty.gif"}" alt="{$_user.name}" />
</td>
<td class="owner">
{*	{if @$smarty.session.signed}
		<img class="action" src="/img/ico/mail-c.gif" alt="" onclick="return window.internal_mail.show('{$_user.login}', '{$_user.author}');" />
		<img class="action" src="/img/ico/alert-c.gif" alt="" onclick="return window.complaint_mail.show('{$_user.login}', '{$post.id}', '{$current_url}');" />
	{/if}*}
	<span class="author"><a class="userlink" href="/id{$_user.id}/" title="{$_user.name}">{$_user.name}</a></span>
	<span class="date"><a class="datelink">{$post.tm|datef}</a></span>
</td>
</tr>
<tr><td class="comment">
<p>{$post.content}</p>
</td></tr>
<tr><td>
{if isset( $allow_comment ) && $allow_comment}<p class="answer">
<div>
<a class="jsbutton" onclick="return window.posts.show({$post.id});">ответить</a>
{if @$smarty.session.signed==$_user.id}<a class="jsbutton warning" onclick="return window.posts.del({$post.id});">удалить</a>{/if}
</div>
</p>{/if}
</td></tr></table>

{/if}{/if}
</td></tr>
{/foreach}

{if @!$onlyOne}
{if !$postsExists}
<tr id="postsBlank"><td>
Комментариев пока нет. {if @$allow_comment}Ваш может быть первым!{else}если <a href="/signin/">авторизоваться<a/>, ваш может быть первым.{/if}
</td></tr>
{/if}
{/if}

{if @!$onlyOne}

{if isset( $allow_comment ) && $allow_comment}
<tr id="postsLastRow"><td>
<hr/>
<p>
<a class="jsbutton" onclick="return window.posts.show();">комментировать</a>
</p>
</td></tr>{/if}

</tbody>
</table>

</div>
{/if}